﻿// =================================================================== 
// 业务逻辑层(GDIT.BLL)
//====================================================================
// 文件：BUsers.cs
// 项目名称：学院网站
// 创建时间：2012-08-08
// 负责人：ChenZhiGang
//引用DevExpress.Data.Filtering，DevExpress.Xpo程序集
// 程序集介绍：用户操作逻辑
// ===================================================================
using DevExpress.Xpo;
using DevExpress.Data.Filtering;
using GDIT.Base.LogHelper;
using System;
using GDIT.Model;
using GDIT.DAL;

namespace GDIT.BLL
{
    public class BUsers
    {
        private Pattern.DALAbstractFactory dataFactory = DataProvider.defaultProvider;
        //通过工厂获得当前的提供程序
        //用反射，通过web.config获得当前提供程序的名，再实例化。

        //private readonly Mtb_Users _tbUsers = new Mtb_Users();
        public bool IsLogin(string userName, string userPwd)
        {
            Logger.Info(String.Format("用户名[{0}],用户密码[{1}]", userName, userPwd));
            if (dataFactory.DALDusersProvider.IsPass(userName, userPwd))
            {
                Logger.Info("login success");
                return true;
            }
            else
            {
                Logger.Info("login false");
                return false;
            }
               
        }
        /// <summary>
        /// 根据用户名查询用户角色
        /// </summary>
        /// <param name="name">用户名</param>
        /// <returns>用户所拥有的系统角色，没有则返回空</returns>
        public string SelectRole(string name)
        {
            return dataFactory.DALDusersProvider.SelectRole(name);
        }

        /// <summary>
        /// 根据用户名查询用户所在部门
        /// </summary>
        /// <param name="name">用户名</param>
        /// <returns>返回用户所在部门，没有则返回空</returns>
        public string SelectDepartment(string name)
        {
            return dataFactory.DALDusersProvider.SelectDepartment(name);
        }

        /// <summary>
        /// 根据用户名修改用户角色
        /// </summary>
        /// <param name="name">用户名</param>
        /// <param name="role">将要修改的用户角色</param>
        public bool UpdateRole(string name, string role)
        {
            Logger.Info(String.Format("用户名[{0}],所要修改角色[{1}]", name, role));
            if (dataFactory.DALDusersProvider.UpdateRole(name,role) == 1)
            {
                Logger.Info("Update success");
                return true;
            }
            else
            {
                Logger.Info("Update false");
                return false;
            }
        }

        /// <summary>
        /// 根据用户名修改用户所在部门
        /// </summary>
        /// <param name="name">用户名</param>
        /// <param name="department">用户所在部门</param>
        public bool UpdatePosition(string name, string department)
        {
            Logger.Info(String.Format("用户名[{0}],所要修改部门[{1}]", name, department));
            if (dataFactory.DALDusersProvider.UpdatePosition(name, department) == 1)
            {
                Logger.Info("Update success");
                return true;
            }
            else
            {
                Logger.Info("Update false");
                return false;
            }
        }

        /// <summary>
        /// 根据用户名修改用户密码
        /// </summary>
        /// <param name="name">用户名</param>
        /// <param name="password">用户将要修改的用户密码</param>
        public bool UpdatePassword(string name, string password)
        {
            Logger.Info(String.Format("用户名[{0}],所要修改的用户密码[{1}]", name, password));
            if (dataFactory.DALDusersProvider.UpdatePassword(name, password) == 1)
            {
                Logger.Info("Update success");
                return true;
            }
            else
            {
                Logger.Info("Update false");
                return false;
            }
        }

        /// <summary>
        /// 修改用户个人资料
        /// </summary>
        /// <param name="user"></param>
        public bool UpdateUserData(Mtb_Users user)
        {
            Logger.Info(String.Format("用户名[{0}],用户密码[{1}]", user.UserName, user.UserPwd));
            if (dataFactory.DALDusersProvider.UpdateUserData(user) == 1)
            {
                Logger.Info("login success");
                return true;
            }
            else
            {
                Logger.Info("login false");
                return false;
            }
        }

        /// <summary>
        /// 判断用户名是否已经存在
        /// </summary>
        /// <param name="name">将要添加的用户名</param>
        /// <returns>true：用户名存在  false：用户名不存在</returns>
        public bool IsExist(string name)
        {
            return dataFactory.DALDusersProvider.IsExist(name);
        }

        /// <summary>
        /// 根据用户名返回一个用户对象
        /// </summary>
        /// <param name="name">用户名</param>
        /// <returns></returns>
        public Mtb_Users GetUser(string name)
        {
            return dataFactory.DALDusersProvider.GetUser(name);
        }

        /// <summary>
        /// 返回所有用户资料
        /// </summary>
        /// <returns>返回所有用户的资料</returns>
        public XPCollection GetAllUser()
        {
            return dataFactory.DALDusersProvider.GetAllUser();
        }

        /// <summary>
        /// 新增一个用户
        /// </summary>
        /// <param name="user">需要新增的用户对象</param>
        /// <returns></returns>
        public bool AddUser(Mtb_Users user)
        {
            Logger.Info(String.Format("要增加的用户名[{0}],要增加的用户密码[{1}]", user.UserName, user.UserPwd));
            if (dataFactory.DALDusersProvider.AddUser(user) == 1)
            {
                Logger.Info("Insert success");
                return true;
            }
            else
            {
                Logger.Info("Insert false");
                return false;
            }
        }

        /// <summary>
        /// 删除一个用户
        /// </summary>
        /// <param name="user">需要删除的用户对象</param>
        /// <returns></returns>
        public bool DeleteUser(int id)
        {
            Logger.Info(String.Format("用户ID[{0}]", id));
            if (dataFactory.DALDusersProvider.DeleteUser(id) == 1)
            {
                Logger.Info("Delete success");
                return true;
            }
            else
            {
                Logger.Info("Delete false");
                return false;
            }
        }
    }
}
